Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

16 Stron V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> Bezpieczeństwo skryptów PHP, Jak zabezpieczyć się przed włamaniem
MajareQ
post
Post #121





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


Cytat(sopel @ 20.03.2008, 14:33:59 ) *
@MajareQ, poczytaj trochę więcej o bezpieczeństwie, a potem dopiero nas uraczaj cudownymi uniwersalnymi skryptami zabezpieczającymi, ok?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

co do drugiego skryptu, wyobraź sobie sytuacje, w której jesteśmy w tej samej sieci lokalnej (na zewnątrz mamy to samo IP), rozpoczyam sesję i daję ci linka. zapobiegłeś session fixation? (nie mówiąc o tym, że ograniczyłeś dostęp ludziom, których ip może się zmieniać w czasie połączenia).


Czy ja powiedziałem, że to jest uniwersalny kod? Nie rozumiesz kodu co podałem?
---
Bardziej widzą problem w dynamicznych IP.

A tak BTW to zabezpieczeniem przed atakami GET jest m.in:

  1. <?php
  2. $id = $_GET['id'];
  3. if (is_numeric($id)) {
  4. // kod dalszy
  5. } else {
  6. echo'Nie kombinuj!';
  7. }
  8. ?>
Go to the top of the page
+Quote Post
Xniver
post
Post #122





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


Znowu Ameryki nie odkryłeś (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Poza tym lepiej już użyć is_int(po co przy ID float?), rzutowania(int) lub napisać jakąś klase do tego, np. w swoim frameworku mam tak:
  1. <?php
  2. $id = XF::getRequest()->getInteger('id', 0, Request::POST); // Klucz, wartosć domyślna, typ(POST, cookie, server)
  3. ?>


Ten post edytował Xniver 21.03.2008, 23:17:50
Go to the top of the page
+Quote Post
bełdzio
post
Post #123





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(MajareQ @ 20.03.2008, 13:55:00 ) *
Wszystkimi dotyczącymi formularzy, ciastek, SQL icjection etc.

nie wydaje mi się :-) a dlaczego nie zostało juz powiedziane pare stron wcześniej
Go to the top of the page
+Quote Post
MajareQ
post
Post #124





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


ten kod zamienia znaki
Kod
'

i
Kod
"

na
Kod
\'

i
Kod
\"


Zatem zabezpiecza, bo blokuje np. zapytania SQL z GEt.
Go to the top of the page
+Quote Post
bełdzio
post
Post #125





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(MajareQ @ 22.03.2008, 16:27:33 ) *
ten kod zamienia znaki

Zatem zabezpiecza, bo blokuje np. zapytania SQL z GEt.

1. Twój światopogląd ogranicza się do mySQL, nie w każdym systemie db znak "\" jest znakiem ucieczki
2. skoro addslaashes broni przed SQLi to po co powstała funkcja mysql_real_escape_string ? dla fazy?

Ten post edytował bełdzio 23.03.2008, 12:34:25
Go to the top of the page
+Quote Post
MajareQ
post
Post #126





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


Czy ja napisałem ze to zabezpieczy przed wszystkim?

W PHP można to zrobić, poprzez wykonanie na każdym tekstowym parametrze wykorzystywanym do budowy zapytania wbudowanej funkcji addslashes(), która dodaje backslash przed znakami, takimi jak ', " czy \, dzięki czemu znaki te nie są traktowane jak znaki specjalne. Dostępne są również funkcje specyficzne dla poszczególnych silników, takie jak np. oferowana przez serwer MySQL mysql_real_escape_string().
To robi moja funkcja.
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #127





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@MajareQ

Kombinujesz, a nic nowego nie piszesz. Po co zabezpieczać ciągi znaków i zamieniać " na \", gdy to ma trafić do pliku. Zabezpiecza się i kontroluje tak jak to tego wymaga.
Do budowy zapytań używa się specjalnych funkcji, bo jak MySQL ma \' to PgSQL czy MSSQL (jeśli dobrze pamiętam) ma '' (podwójny) a tamto \' rozwali kwerendę.
Do sprawdzania integer lepiej użyć takiego sprawdzenia, czy jest dany parametr, czy nie jest pusty, a potem ctype_digit() bo w ciągu nie może być nic oprócz cyfr. Bo jak rzutujemy to będzie nie to co chcemy, nie wykryjemy błędnego parametru, tylko wyświetlimy dla np. id = 0.

Ale to wszystko było, przeczytaj i dopisz jak czegoś będzie brakować, a nie powtarzaj to co już jest.
Go to the top of the page
+Quote Post
kiamil
post
Post #128





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.03.2008

Ostrzeżenie: (0%)
-----


Cytat(NuLL @ 5.06.2006, 02:40:06 ) *
Podziele sie z Wami moim pomyslem jak ja zalatwiam prawie wszystko roboty tego typu w swoich projektach.

Jest formularz
  1. <input type='text' name='a3ol5m3in5klnw_name'>

To takie smieszne w nazwie to losowy string - generowany md5 na bazie czasu. Zapisuje sie go w sesji. User wysyla i sie wyciaga z POST wszystkie pola porownujac z tym co jest w sesji zapisane - cos ala token doklejony do nazwy pola. I tyle (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Roboty wysylajace spam np. na blogi dzialaja na bazie znajomosci nazw pol formularza oraz adresow - bo tak dziala np. CURL - taki prosty patch rozwala wiekszosc na lopatki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Jesli nie ma sesji tzn ze ktos cos majstruje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


A jednak.. Nie jestem w 100% pewny ale wysylajac mozna ustawic nazwe tego pola na "a_name" i zmienna sesyjna tez na "a_name" - a wtedy już to zabezpieczenie nei działa..
Go to the top of the page
+Quote Post
Lejto
post
Post #129





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Znalazłem w sieci ciekawą stroną z materiałami video związanymi z atakami na strony internetowe

http://www.uw-team.org/index.php?id=videoarty

Na filmach między innymi:

Wstęp do ataków typu SQL Injection
Atak SQL Injection z użyciem Union Select
SQL Injection - union select + komentowanie kodu
SQL Injection - wykrywanie struktury bazy danych
Blind SQL Injection - odgadywanie haseł po znaku
Błędy w użyciu funkcji include()
Includowanie kodu PHP z innego serwera
Session Poisoning - zatruwanie sesji PHP
XSS - Cross Site Scripting
SQL Injection - dopisywanie danych do bazy
XSS - metody zaawansowane
PHP - Register Globals
PHP - baza userów w pliku TXT

i pare innych...
Go to the top of the page
+Quote Post
renderman
post
Post #130





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.06.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam wszystkich,

Po przeczytaniu całego tematu wzdłuż i w szerz mam wrażenie że już nic nie wiem. Wiele sposobów cała masa kodu który dla każdego kto to czyta chyba wprawia w zawrót głowy. Czy znalazło by się chociaż kilka osób które w prosty i nie zagmatwany, możliwie dobrze skomentowany sposób przedstawiłyby jak poprawnie stworzyc prosty i za razem "bezpieczny' szkielet strony i może umiescilyby to jako przypięty temat... tylko prosiłbym by wypowiedział się ktoś naprawde dobrze obeznany z tematem.

Zakładam schemat w którym za pomocą wywołania o postaci:

  1. http://moja_strona.pl/index.php?m2=grafika2d


powoduje wygenerowanie strony według: ( tak to obecnie działa na mojej stronie )

  1. <?php if(empty($_GET['m2']) or $_GET['m2']=="portfolio_menu_0"){include("portfolio_menu_0.php");}
  2. if($_GET['m2']=="grafika2d")   {include("portfolio_menu_1.php"); }
  3. if($_GET['m2']=="grafika3d")   {include("portfolio_menu_2.php"); }
  4. if($_GET['m2']=="cv")            {include("portfolio_menu_3.php"); }
  5. if($_GET['m2']=="blog")          {include("portfolio_menu_4.php"); }
  6. ?>


Może na bazie tego ktoś przedstawilby warianty zabezpieczenia ( + ) i ( - ) danego rozwiązania ? To dośc proste ale myśle ze wielu początkujacych z pewnoscią będzie szukac wlasnie tego.

Ten post edytował renderman 9.11.2008, 19:51:48
Go to the top of the page
+Quote Post
bełdzio
post
Post #131





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


jeśli chodzi o inkludowanie plików zerknij tu -> http://www.beldzio.com/bezpieczenstwo-dostepu-do-plikow
Go to the top of the page
+Quote Post
renderman
post
Post #132





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.06.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Szczerze mimo że widze jakies sensowne rozwiązania dla mnie jako poczatkujacego nawet implementacja tego w wlasnym kodzie jest trudna. Zapewne 100 podobnych do mnie osob przegladajac rozne rozwiaznia dojdzie do tego samego wniosku. Można odbic piłeczke i powiedziec... - ucz się dalej, ale z bezpieczeństwem nie ma żartów. Nie chcialbym osobiscie by jakis haker z mlekiem pod nosem rozwalił cała strone a nie daj boże serwer tylko dla tego że moj kod nie był do końca bezpieczny. To co zamieściłem w poprzednim poscie jest juz tak oklepanym tematem na wszystkich forach a mimo to nikt nie zebrał sie ( mowie tu o tych co znaja to na wylot i wiedzą co z tym zrobic ) by pokazac reszcie jak to powinno byc poprawnie krok po kroku.
Go to the top of the page
+Quote Post
gladiror
post
Post #133





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Ogólnie mówiąc niby zasada jest prosta: "To co podaje lub może w jakiś sposób zmodyfikować użytkownik trzeba przefiltrować"... Dochodzą do tego elementy jakości napisanego kodu (czytaj: dużo doświadczenia). Nie liczcie, że od razu będziecie super administratorami swoich serwisów, ale warto pamiętać o tej zasadzie, którą napisałem powyżej. Chodzi tutaj w szczeególności o tablice POST, GET, COOKIES, SESSION, REQUEST czy SERVER. Cookolwiek jest wyświetlane na stronie lub pakowane do jakiejś bazy i te informacje są podane lub mogą być w jakiś sposób podane przez użytkownika trzeba do przefiltrować.
Go to the top of the page
+Quote Post
renderman
post
Post #134





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.06.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Gdzies obiło mi się o uszy... lepiej iśc w frameworka niż tworzyc wszystko od podstaw. Zakładam jednak że nie chce frameworka dlatego że:

1: strone czesto da się zrobic duzo prosciej i nie konieczny jest do tego cały silnik jak joomla tylko po to by uzyc jednej funkcji.
2. cała masa komplikacji, zmian, aktualizacji.

Chcialbym znaleźc proste rozwiaznie dla prostej strony bez udziwnień, byle by bylo bezpiecznie przy pomocy np w.w. includów . Jak to będę w stanie ogarnac to wtedy mozna myslec o dalszej nauce i rozwijaniu takiej strony.. Wole zrobic mniej niż zrobic źle..
Może ktos zaproponuje inne lepsze rozwiazanie od mojego?

Ten post edytował renderman 9.11.2008, 21:37:30
Go to the top of the page
+Quote Post
mlattari
post
Post #135





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


Ja piszę przeważnie wszystko w edytorze nano :-) Ale jeżeli mam kilka tysięcy linijek to przechodzę na Notepada ++ :-)) Po zapisaniu w Notepadzie ++ takie duże pliki wyglądają później chaotycznie w nano czy pico :-)

Ale pozostając bardziej w temacie to mam pytanie dotyczące zmiennych $_SESSION. Czy użytkownik serwisu www może w jakiś prosty sposób dostać się do zawartości tych zmiennych a jeżeli tak to czy może je w jakiś sposób zmienić zakładając, że używamy np. standardowych ciasteczek.

np. jeżeli mamy $_SESSION[uprawnienia_admina]='NIE' to czy ktoś mógłby się do tego dostać i ustawić na 'TAK' (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
erix
post
Post #136





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jeśli masz babola w skrypcie, to tak.

Można również edytować plik sesji, jeśli serwer jest "zabezpieczony" (dane sesji, to domyślnie zserializowana tablica zapisywana w pliku znajdującym się we współdzielonym folderze).
Go to the top of the page
+Quote Post
bełdzio
post
Post #137





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(mlattari @ 1.03.2009, 17:24:14 ) *
Czy użytkownik serwisu www może w jakiś prosty sposób dostać się do zawartości tych zmiennych

http://www.beldzio.com/bezpieczenstwo-mechanizmu-sesji
Go to the top of the page
+Quote Post
mlattari
post
Post #138





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


Witam!

Pisałem już w innym wątku o mojej "metodzie" zabezpieczenia się przed eksperymentami polegającymi na wpisywaniu przez userów wartości lub znaków do paska url na danej stronie serwisu www. Moja metoda okazała się nieskuteczna i beznadziejna... :-( Może dobra na szarych, nieznających się na hakowaniu eksperymentatorów... :-)
Czy jest jakiś sposób (skuteczny) na to, żeby jak np. jesteśmy na stronce http://www.xxxx.pl/index.php?test=1&test2=2, to żeby nie można było RĘCZNIE WPISYWAĆ żadnych zmiennych do paska url. Nie chodzi mi o to, żeby sprawdzać pojedyńczo wpisane przez użytkownika wartości, tylko o to, żeby a priori była taka możliwość wykluczona :-)

Ten post edytował mlattari 2.03.2009, 17:54:52
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #139





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
Czy jest jakiś sposób (skuteczny) na to, żeby jak np. jesteśmy na stronce http://www.xxxx.pl/index.php?test=1&test2=2, to żeby nie można było RĘCZNIE WPISYWAĆ żadnych zmiennych do paska url. Nie chodzi mi o to, żeby sprawdzać pojedyńczo wpisane przez użytkownika wartości, tylko o to, żeby a priori była taka możliwość wykluczona :-)


Usun stronke z serwera, wylacz serwer dzieki czemu skutecznie zabezpieczysz sie przed danymi przesylanymi przez usera.

Zawsze tez mozesz powiedziec userom zeby nie wchodzili na twoja stronke, pokasowali przegladarki - przez co nie beda mogli modyfikowac tego URLa.


Po prostu: twoj pomysl jest idiotyczny, i twoim zadaniem jest zabezpieczyc skrypt tak zeby nie poniszczyl sie, danych, dla dowolnych zmiennych wpisanych przez usera w URL.
Go to the top of the page
+Quote Post
mlattari
post
Post #140





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


hmmm a dlaczego pomysł jest idiotyczny? Może coś niejasno się wyraziłem :-) Po kiego ma ktoś mi wpisywać jakieś zmienne ręcznie w pasku jak wejdzie na serwis? Czy np. na tym forum też trzeba to robić? Po co? Wiadomo co ma to na celu :-) Swoją drogą skrypt też musi mieć zabezpieczenia ale chciałem w ten sposób osiągnąć dodatkowy poziom zabezpieczenia właśnie przed idiotami i eksperymentatorami :-) Można czy nie?

Ten post edytował mlattari 2.03.2009, 18:29:36
Go to the top of the page
+Quote Post

16 Stron V  « < 5 6 7 8 9 > » 
Reply to this topicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.11.2025 - 18:59